package com.atguigu.config;

import com.atguigu.bean.Color;
import com.atguigu.bean.ColorFactoryBean;
import com.atguigu.bean.Red;
import com.atguigu.condition.MyImportBeanDefinitionRegistrar;
import com.atguigu.condition.MyImportSelector;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

/**
 * @Author:zwy
 * @Despriction:
 * @Date:Create in 14:35 2018/7/7
 * @Modify By:
 */
@Import({Color.class, Red.class,MyImportSelector.class, MyImportBeanDefinitionRegistrar.class})//默认名称是类的全路径名称
@ComponentScan("com.atguigu.*")
@Configuration
public class MyConfig {
    /**
     * 给容器中注册组件
     * 1)、包扫描+组件标注注解(@Controller/@Service/@Repository/@Component) [自己写的]
     * 2)、@Bean[导入的第三方包里组件]
     * 3)、@Import[快速给容器中导入一个组件]
     *      1)、@Import(要导入的组件类.class)
     *      2)、ImportSelector:返回需要导入的组件的全类名字符串数组
     *      3)、ImportBeanDefinitionRegistrar:
     *
     *  4)、使用Spring提供的FactoryBean(工厂bean);
     *      1)默认是获取到的是工厂bean调用的getObject创建的对象
     *      2)要获取工厂Bean的本身,我们需要给id前在加上&
     */
    @Bean
    public ColorFactoryBean colorFactoryBean(){
        return new ColorFactoryBean();
    }
}
